//package com.situ.skymall.user.api.common;
//
//import com.alibaba.fastjson2.JSON;
//import com.auth0.jwt.JWT;
//import com.auth0.jwt.JWTVerifier;
//import com.auth0.jwt.algorithms.Algorithm;
//import com.auth0.jwt.exceptions.JWTVerificationException;
//import com.auth0.jwt.interfaces.DecodedJWT;
//import com.situ.utils.JsonResult;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.http.HttpStatus;
//import org.springframework.stereotype.Component;
//import org.springframework.util.StringUtils;
//import org.springframework.web.servlet.HandlerInterceptor;
//
//import java.io.PrintWriter;
//
//@Component
//public class JwtInterceptor implements HandlerInterceptor {
//    @Value("${jwt.secret}")
//    private String jwtSecret;
//
//    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
//        String authHeader = req.getHeader("Authorization");
//        if (!StringUtils.hasText(authHeader)) {
//            authHeader = req.getParameter("Authorization");
//        }
//
//        // [关键修改]：检查 "Bearer " 前缀并提取真正的 token
//        String jwt = null;
//        if (StringUtils.hasText(authHeader) && authHeader.startsWith("Bearer ")) {
//            jwt = authHeader.substring(7);
//        } else {
//            jwt = authHeader; // 兼容没有 "Bearer " 的情况
//        }
//
//        // 如果没有 token，直接拒绝
//        if (!StringUtils.hasText(jwt)) {
//            sendError(resp, "未提供token，禁止访问");
//            return false;
//        }
//
//        // 验证token
//        JWTVerifier verifier = JWT.require(Algorithm.HMAC256(jwtSecret)).build();
//        try {
//            DecodedJWT dj = verifier.verify(jwt);
//            Integer userId = dj.getClaim("userId").asInt();
//            System.out.println("userId:"+userId);
//            return true;
//        } catch (JWTVerificationException e) {
//            sendError(resp, "jwt验证失败");
//            return false;
//        }
//    }
//
//    // 辅助方法，用于发送错误响应
//    private void sendError(HttpServletResponse resp, String msg) throws Exception {
//        resp.setStatus(HttpStatus.UNAUTHORIZED.value());
//        resp.setContentType("application/json;charset=utf-8");
//        PrintWriter out = resp.getWriter();
//        out.write(JSON.toJSONString(JsonResult.fail(401, msg)));
//        out.flush();
//    }
//}